package com.CST.mapper.cst.ys;

import com.CST.dto.ys.YsBusinessTargetDTO;
import com.CST.entity.ys.YsBusinessTarget;
import com.CST.entity.ys.YsBusinessTargetRecords;
import com.CST.vo.ys.YsBusinessTargetRecordVO;
import com.CST.vo.ys.YsBusinessTargetVO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 业务量配套指标
 *  Mapper 接口
 *
 * @author cw
 * @since 2023-05-06
 */
@Mapper
public interface YsBusinessTargetMapper extends BaseMapper<YsBusinessTarget> {
    /**
     * 根据id查询数据
     * @param id id
     * @return result
     */
    YsBusinessTargetVO selectInfoById(Long id);

    /**
     * 查询列表
     * @param ysBusinessTargetDTO 查询条件
     * @return result
     */
    List<YsBusinessTargetVO> selectListByDto(YsBusinessTargetDTO ysBusinessTargetDTO);

    /**
     * 删除发布表
     * @return result
     */
    Boolean deleteRE();

    /**
     * 发布
     * @param result 发布数据
     * @return result
     */
    Boolean insertRE(List<YsBusinessTargetVO> result);

    /**
     * 查询修订记录表中是否有同样用友编号的数据
     * @param num 编号
     * @return result
     */
    int selectRecordIsExist(Long num);

    /**
     * 插入修订记录表
     * @param info 原始数据
     * @param record 修订记录
     * @return result
     */
    int insertRecord(@Param("info") YsBusinessTargetVO info, @Param("record") YsBusinessTargetRecords record);

    /**
     * 删除
     * @param id id
     * @return result
     */
    int deleteToUpdateById(Long id);

    /**
     * 查询最大id
     * @return result
     */
    Long selectMaxId();

    /**
     * 撤销
     * @param id id
     */
    void updateFlagByNum(Long id);

    /**
     * 删除修订记录
     * @param id id
     */
    void deleteRecordById(Long id);

    /**
     * 查询修订记录列表
     * @param dto 查询条件
     * @return result
     */
    List<YsBusinessTargetRecordVO> selectRecordList(YsBusinessTargetDTO dto);

    /**
     * 继承-查询
     * @param period 年月
     * @return result
     */
    List<YsBusinessTarget> selectYearAndMonthDateList(Integer period);

    /**
     * 批量插入
     * @param List list
     * @return result
     */
    Boolean insertBatch(List<YsBusinessTarget> List);

    /**
     * 根据年月删除所有数据
     * @param period 年月
     */
    void deleteByPeriod(Integer period);

    /**
     * 删除
     * @param id id
     * @return result
     */
    Integer updateDeleteFlagById(Long id);
}
